import axios from "axios";
import { getUserTempId } from "./tool";
import store from "@/store";

// 进度条提示
import NProgress from "nprogress";
import "nprogress/nprogress.css";

const request = axios.create({
  baseURL: "/api", //  基础路径，请求地址公共前缀
  timeout: 10000,
  headers: {},
});

// 配置请求拦截器
request.interceptors.request.use((confige) => {

  // console.log(confige, '请求拦截成功的回调')
  NProgress.start(); // 请求前开启进度条
  // 在请求头中添加tempId 或者 token
  const { token } = store.state.user
  if (token) {
    // console.log(token)
    confige.headers.token = token
  } else {
    confige.headers.userTempId = getUserTempId()
  }
  return confige;
})

// 配置响应拦截器
request.interceptors.response.use(
  (response) => {
    // console.log('响应拦截成功触发的回调')
    NProgress.done(); // 请求结束，进度条结束
    if (response.data.code === 200) {
      // 请求成功，功能成功，返回数据
      return response.data.data;
    } else {
      // 请求失败或功能失败(状态码不是200)，返回失败的状态码和错误信息
      alert(response.data.message);
      return Promise.reject(
        "失败状态码：" + response.data.code + response.data.message ||
        "未知错误"
      );
    }
  },
  (error) => {
    // console.log('响应拦截失败触发的回调')
    NProgress.done(); // 请求结束，进度条结束

    return Promise.reject(error);
  }
);

export default request;
